package dmp

import (
	"github.com/mingrammer/cfmt"
	"gorm.io/gorm"
)

type User struct {
	gorm.Model
	Info     string
	Username string
	Password string
}

// 获取数据库操作对象
var db = GetDB()

// 查询表中所有数据并且用表格形式展示
func List() {
	users := []User{}
	db.Find(&users)
	ShowTable(users)
}

// 更新指定数据
func Change(id *int, username *string, password *string, info *string) {
	if *username == "" || *password == "" {
		cfmt.Warning("账号密码不能为空")
		return
	}
	user := &User{}
	// 通过id查找数据
	db.First(user, id)
	// 更新指定数据
	user.Username = *username
	user.Password = *password
	user.Info = *info
	result := db.Save(user)
	err := result.Error
	if err != nil {
		cfmt.Errorf("更新失败: %s", err)
		return
	}
	cfmt.Success("更新成功")
}

// 删除指定数据
func Delete(id *int) {
	// 通过id删除数据
	result := db.Delete(&User{}, id)
	err := result.Error
	if err != nil {
		cfmt.Errorf("删除失败: %s", err)
		return
	}
	cfmt.Success("删除成功")
}

// 添加数据
func Add(username *string, password *string, info *string) {
	result := db.Create(&User{Username: *username, Password: *password, Info: *info})
	err := result.Error
	if err != nil {
		cfmt.Errorf("添加失败：%s", err)
		return
	}
	cfmt.Success("添加成功")
}
